# 角色管理服务层
from backend.models.role import Role
from backend.infrastructure.database import db

def get_role_list():
    roles = Role.query.all()
    return [r.to_dict() for r in roles]

def create_role(data):
    name = data.get('name')
    description = data.get('description')
    if not name:
        return {'success': False, 'message': '角色名不能为空'}
    if Role.query.filter_by(name=name).first():
        return {'success': False, 'message': '角色名已存在'}
    role = Role(name=name, description=description)
    db.session.add(role)
    db.session.commit()
    # ✅ 修复：返回Role对象而不是字典，以便日志记录能正确工作
    return {'success': True, 'data': role}

def update_role(role_id, data):
    from backend.infrastructure.database import db
    role = db.session.get(Role, role_id)
    if not role:
        return {'success': False, 'message': '角色不存在'}
    role.name = data.get('name', role.name)
    role.description = data.get('description', role.description)
    db.session.commit()
    # ✅ 修复：返回Role对象而不是字典，以便日志记录能正确工作
    return {'success': True, 'data': role}

def delete_role(role_id):
    from backend.infrastructure.database import db
    role = db.session.get(Role, role_id)
    if not role:
        return {'success': False, 'message': '角色不存在'}
    db.session.delete(role)
    db.session.commit()
    return {'success': True}
